; Base del sistema logo tridimensionale per virare :q locale [l m] as "l cos :q as "m sen :q as "k11 (:l11 * :l + :l21 * :m) as "k12 (:l12 * :l + :l22 * :m) as "k13 (:l13 * :l + :l23 * :m) as "k21 (:l21 * :l - :l11 * :m) as "k22 (:l22 * :l - :l12 * :m) as "k23 (:l23 * :l - :l13 * :m) sostituire fine per beccheggiare :q locale [l m] as "l cos :q as "m sen :q as "k11 (:l11 * :l - :l31 * :m) as "k12 (:l12 * :l - :l32 * :m) as "k13 (:l13 * :l - :l33 * :m) as "k31 (:l31 * :l + :l11 * :m) as "k32 (:l32 * :l + :l12 * :m) as "k33 (:l33 * :l + :l13 * :m) sostituire fine per rollare :q locale [l m] as "l cos :q as "m sen :q as "k21 (:l21 * :l + :l31 * :m) as "k22 (:l22 * :l + :l32 * :m) as "k23 (:l23 * :l + :l33 * :m) as "k31 (:l31 * :l - :l21 * :m) as "k32 (:l32 * :l - :l22 * :m) as "k33 (:l33 * :l - :l23 * :m) sostituire fine per sostituire muro as "l11 :k11 as "l12 :k12 as "l13 :k13 as "l21 :k21 as "l22 :k22 as "l23 :k23 as "l31 :k31 as "l32 :k32 as "l33 :k33 fine per camminare :e as "x3d (:x3d + :e * :l11 * :scala3d) as "y3d (:y3d + :e * :l12 * :scala3d) as "z3d (:z3d + :e * :l13 * :scala3d) disegnare :x3d :y3d :z3d fine per disegnare :u :v :w vaipos (:f3d * :u / (:f3d - :w)) (:f3d * :v / (:f3d - :w)) fine per vaipos :q :k ; se ambedue (:q < 0) (:q > -2e4) [as "q 0] ; se ambedue (:k < 0) (:k > -2e4) [as "k 0] vaxy :q :k fine as "scala3d 2 per tridimensionale nt tana ps giu as "f3d 360 as "k11 0 as "k12 1 as "k13 0 as "k21 -1 as "k22 0 as "k23 0 as "k31 0 as "k32 0 as "k33 1 as "x3d 0 as "y3d 0 as "z3d 0 sostituire fine per comandi.abbreviati copiadef "tri "tridimensionale copiadef "rol "rollare copiadef "bec "beccheggiare copiadef "vir "virare copiadef "cam "camminare fine per terna locale "stato as "stato penna terna.assi aspenna :stato fine per niente.terna terna fine per terna.assi locale "axx locale "p giulapenna spessore 1 viola1 as "p dove as "dir dir as "axx 50 puntino 10 :origine.colore rosso1 giulapenna disegnare (:x3d + :axx * :k11) (:y3d + :axx * :k12) (:z3d + :axx * :k13) su vapos :p asdir :dir verde1 giulapenna disegnare (:x3d + :axx * :k21) (:y3d + :axx * :k22) (:z3d + :axx * :k23) su vapos :p asdir :dir giallo1 giulapenna disegnare (:x3d + :axx * :k31) (:y3d + :axx * :k32) (:z3d + :axx * :k33) su vapos :p asdir :dir fine per puntino :dim :colore ascolriempi :colore saltaxy meno prodotto :dim .5 meno prodotto :dim .5 blocco :dim :dim saltaxy prodotto :dim .5 prodotto :dim .5 fine per omino.dimensione :dimensione as "omino.dimensione :dimensione fine per omino.colore :colore as "omino.colore :colore ascolpenna :omino.colore fine per omino.spessore :spessore as "omino.spessore :spessore spessore :omino.spessore fine per omino.forma :braccio :gamba as "omino.corpo :omino.dimensione as "braccio.corpo prodotto :omino.dimensione :braccio as "gamba.corpo prodotto :omino.dimensione :gamba fine per omino.braccio.destro virare :braccio.destro camminare :braccio.corpo camminare meno :braccio.corpo virare meno :braccio.destro fine per omino.braccio.sinistro virare meno :braccio.sinistro camminare :braccio.corpo camminare meno :braccio.corpo virare :braccio.sinistro fine per omino.gamba.destra virare :gamba.destra camminare :gamba.corpo camminare meno :gamba.corpo virare meno :gamba.destra fine per omino.gamba.sinistra virare meno :gamba.sinistra camminare :gamba.corpo camminare meno :gamba.corpo virare :gamba.sinistra fine per omino.corpo camminare :omino.corpo fine per omino.testa virare -90 ripeti 36 [camminare 5 virare 10] virare 90 fine per omino.articola :braccio.destro :braccio.sinistro :gamba.destra :gamba.sinistra giulapenna omino.corpo omino.testa omino.braccio.destro omino.braccio.sinistro camminare meno :omino.corpo omino.gamba.destra omino.gamba.sinistra fine per omino :dim :col :spess :prop1 :prop2 :bd :bs :gd :gs omino.dimensione :dim omino.colore :col omino.spessore :spess omino.forma :prop1 :prop2 omino.articola :bd :bs :gd :gs fine per zoom.in :zoom sulapenna beccheggiare 90 camminare :zoom beccheggiare -90 fine per zoom.out :zoom sulapenna beccheggiare 90 camminare meno :zoom beccheggiare -90 fine per a.sinistra :tot sulapenna virare 90 camminare :tot virare -90 fine per a.destra :tot sulapenna virare -90 camminare :tot virare 90 fine tarta.apparecchia sfondoblunotte as "scala3d 1 as "origine.colore :giallo1 tridimensionale comandi.abbreviati grigio1 rollare 30 omino 120 :grigio1 6 .9 1.1 120 120 160 160 ; secondo omino zoom.in 200 a.sinistra 200 rollare -60 omino 120 :grigio3 6 .9 1.1 140 140 170 170 tarta.primo.piano circolare sfondo.conserva.come "ballo.00
per virare :q
locale [l m]
as "l cos :q
as "m sen :q
as "k11 (:l11 * :l + :l21 * :m)
as "k12 (:l12 * :l + :l22 * :m)
as "k13 (:l13 * :l + :l23 * :m)
as "k21 (:l21 * :l - :l11 * :m)
as "k22 (:l22 * :l - :l12 * :m)
as "k23 (:l23 * :l - :l13 * :m)
sostituire
fine
per beccheggiare :q
locale [l m]
as "l cos :q
as "m sen :q
as "k11 (:l11 * :l - :l31 * :m)
as "k12 (:l12 * :l - :l32 * :m)
as "k13 (:l13 * :l - :l33 * :m)
as "k31 (:l31 * :l + :l11 * :m)
as "k32 (:l32 * :l + :l12 * :m)
as "k33 (:l33 * :l + :l13 * :m)
sostituire
fine
per rollare :q
locale [l m]
as "l cos :q
as "m sen :q
as "k21 (:l21 * :l + :l31 * :m)
as "k22 (:l22 * :l + :l32 * :m)
as "k23 (:l23 * :l + :l33 * :m)
as "k31 (:l31 * :l - :l21 * :m)
as "k32 (:l32 * :l - :l22 * :m)
as "k33 (:l33 * :l - :l23 * :m)
sostituire
fine
per sostituire
muro
as "l11 :k11
as "l12 :k12
as "l13 :k13
as "l21 :k21
as "l22 :k22
as "l23 :k23
as "l31 :k31
as "l32 :k32
as "l33 :k33
fine
per camminare :e
as "x3d (:x3d + :e * :l11 * :scala3d)
as "y3d (:y3d + :e * :l12 * :scala3d)
as "z3d (:z3d + :e * :l13 * :scala3d)
disegnare :x3d :y3d :z3d
fine
per disegnare :u :v :w
vaipos (:f3d * :u / (:f3d - :w)) (:f3d * :v / (:f3d - :w))
fine
per vaipos :q :k
; se ambedue (:q < 0) (:q > -2e4) [as "q 0]
; se ambedue (:k < 0) (:k > -2e4) [as "k 0]
vaxy :q :k
fine
as "scala3d 2
per tridimensionale
nt
tana
ps
giu
as "f3d 360
as "k11 0
as "k12 1
as "k13 0
as "k21 -1
as "k22 0
as "k23 0
as "k31 0
as "k32 0
as "k33 1
as "x3d 0
as "y3d 0
as "z3d 0
sostituire
fine
per comandi.abbreviati
copiadef "tri "tridimensionale
copiadef "rol "rollare
copiadef "bec "beccheggiare
copiadef "vir "virare
copiadef "cam "camminare
fine
per terna
locale "stato
as "stato penna
terna.assi
aspenna :stato
fine
per niente.terna
terna
fine
per terna.assi
locale "axx
locale "p
giulapenna
spessore 1 viola1
as "p dove
as "dir dir
as "axx 50
puntino 10 :origine.colore
rosso1 giulapenna
disegnare (:x3d + :axx * :k11) (:y3d + :axx * :k12) (:z3d + :axx * :k13)
su vapos :p asdir :dir
verde1 giulapenna
disegnare (:x3d + :axx * :k21) (:y3d + :axx * :k22) (:z3d + :axx * :k23)
su vapos :p asdir :dir
giallo1 giulapenna
disegnare (:x3d + :axx * :k31) (:y3d + :axx * :k32) (:z3d + :axx * :k33)
su vapos :p asdir :dir
fine
per puntino :dim :colore
ascolriempi :colore
saltaxy meno prodotto :dim .5 meno prodotto :dim .5
blocco :dim :dim
saltaxy prodotto :dim .5 prodotto :dim .5
fine
per omino.dimensione :dimensione
as "omino.dimensione :dimensione
fine
per omino.colore :colore
as "omino.colore :colore
ascolpenna :omino.colore
fine
per omino.spessore :spessore
as "omino.spessore :spessore
spessore :omino.spessore
fine
per omino.forma :braccio :gamba
as "omino.corpo :omino.dimensione
as "braccio.corpo prodotto :omino.dimensione :braccio
as "gamba.corpo prodotto :omino.dimensione :gamba
fine
per omino.braccio.destro
virare :braccio.destro
camminare :braccio.corpo
camminare meno :braccio.corpo
virare meno :braccio.destro
fine
per omino.braccio.sinistro
virare meno :braccio.sinistro
camminare :braccio.corpo
camminare meno :braccio.corpo
virare :braccio.sinistro
fine
per omino.gamba.destra
virare :gamba.destra
camminare :gamba.corpo
camminare meno :gamba.corpo
virare meno :gamba.destra
fine
per omino.gamba.sinistra
virare meno :gamba.sinistra
camminare :gamba.corpo
camminare meno :gamba.corpo
virare :gamba.sinistra
fine
per omino.corpo
camminare :omino.corpo
fine
per omino.testa
virare -90
ripeti 36 [camminare 5 virare 10]
virare 90
fine
per omino.articola :braccio.destro :braccio.sinistro :gamba.destra :gamba.sinistra
giulapenna
omino.corpo
omino.testa
omino.braccio.destro
omino.braccio.sinistro
camminare meno :omino.corpo
omino.gamba.destra
omino.gamba.sinistra
fine
per omino :dim :col :spess :prop1 :prop2 :bd :bs :gd :gs
omino.dimensione :dim
omino.colore :col
omino.spessore :spess
omino.forma :prop1 :prop2
omino.articola :bd :bs :gd :gs
fine
per zoom.in :zoom
sulapenna
beccheggiare 90
camminare :zoom
beccheggiare -90
fine
per zoom.out :zoom
sulapenna
beccheggiare 90
camminare meno :zoom
beccheggiare -90
fine
per a.sinistra :tot
sulapenna
virare 90
camminare :tot
virare -90
fine
per a.destra :tot
sulapenna
virare -90
camminare :tot
virare 90
fine
tarta.apparecchia
sfondoblunotte
as "scala3d 1
as "origine.colore :giallo1
tridimensionale
comandi.abbreviati
grigio1
rollare 30
omino 120 :grigio1 6 .9 1.1 120 120 160 160
; secondo omino
zoom.in 200
a.sinistra 200
rollare -60
omino 120 :grigio3 6 .9 1.1 140 140 170 170
tarta.primo.piano
circolare
sfondo.conserva.come "ballo.00